/*******************************************************************************
* Имя файла: sevenTask.cpp
* Дата: 28-04-2024
* Разработчик: Андрей Подлегаев
* Группа: 315
* Факультет: ЦДО ТУСУР
* Лицензия: BSD
* Описание: Решение задач к лабораторной работе № 6 (ЦДО ТУСУР)
* *****************************************************************************/

#include "sevenTask.h"

/* Реализация функции проверки номеров на соответствие стандарту */
bool validityStateNumber(std::string& xStateNumber)
{
  if (xStateNumber.length() != 6) {
      return false;
    }
  if (!isalpha(xStateNumber[0]) || !isalpha(xStateNumber[4])
      || !isalpha(xStateNumber[5])) {
      return false;
    }
  if (!isdigit(xStateNumber[1]) || !isdigit(xStateNumber[2])
      || !isdigit(xStateNumber[3])) {
      return false;
    }
  std::string validChars = "ABCEHKMOPTXY";
  if (validChars.find(xStateNumber[0]) == std::string::npos
      || validChars.find(xStateNumber[4]) == std::string::npos
      || validChars.find(xStateNumber[5]) == std::string::npos) {
      return false;
    }

  return true;
}

/* Реализация функции проверки списка номеров на соответствие стандарту и сохранение в файл */
void checkStateNumber(std::string xInFilePath, std::string xOutFilePath)
{
  std::ifstream inputFile(xInFilePath);
  if (!inputFile.is_open()) {
       std::cerr << "Не удалось открыть файл: " << xInFilePath << '\n';
    }
  int N;
  inputFile >> N;

  std::string number;
  std::ofstream outputFile(xOutFilePath);
  if (!outputFile.is_open()) {
      std::cerr << "Не удалось создать файл: " << xOutFilePath << '\n';
    }

  for (int i = 0; i < N; i++) {
      inputFile >> number;
      if (validityStateNumber(number)) {
          outputFile << number << "\tYes" << std::endl;
        } else {
          outputFile << number << "\tNo" << std::endl;
        }
    }

  inputFile.close();
  outputFile.close();
}
